Windows Subsystem for Linux به صورت يك بروزرساني در تابستان براي ويندوز ۱۰ از راه خواهد رسيد. WSL شامل دو بخش است: هستهي زير سيستم كه شامل نسخههاي پيشنمايش سيستمعامل است و سپس يك بستهي نرمافزاري استاندارد را ارائه ميدهد. هسته زير سيستم در واقع چيزي است كه امكان اجراي API لينوكس را در بستر ويندوز فراهم ميكند و قابليت اجراي كتابخانهها و نرم افزارهاي اجراي لينوكسي را به صورت مستفيم و بومي در سيستمعامل ردمونديها، شدني ميكند. اين يعني شما خواهيد توانست بَش (bash) و تمامي ابزارهاي خط فرمان كه از محيط لينوكس انتظار داريد را در ويندوز هم تجربه كنيد.
مايكروسافت با جديت زياد در حال تثبيت موقعيت WSL به عنوان ابزاري براي توسعه دهندگان است و از منظري خاص توسعهدهندگان وب و سازندگان نرمافزارهاي متنباز را پشتيباني ميكند. بسياري از توسعهدهندگان با بَش و ساخت نرمافزار با استفاده از make و gcc و نيز ويرايش متن با vi يا emacs آشنايي دارند. WSL نسخهاي از اين ابزارها را در اختيار توسعهدهندگان قرار خواهد داد كه دقيقا مشابه با نمونهي آنها در لينوكس است؛ چراكه با اقدامات جديد مايكروسافت شما دقيقا لينوكس را به صورت كامل در ويندوز تجربه خواهيد كرد.
windows 10 bash
با چنين تمركزي در بخش توسعهدهندگان، اما مايكروسافت از WSL به عنوان يك پلتفرم گسترشدهنده پشتيباني نميكند. به عنوان مثال امكان دارد بتوان وب سرور آپاچي را تحت WSL اجرا كرد و نيز امكان دارد توسعهي آن مفيد باشد، اما هدف اين نيست كه اپليكيشنهاي كاربردي با چنين پيكربندياي اجرا شوند.
باز شدن راه اپليكيشنهاي ساير پلتفرمها در ويندوز
WSL در واقع از پروژهي Astoria منشا گرفته است. هدف اين پروژه قابليت اجراي اپليكيشنهاي اندرويد بر روي ويندوز ۱۰ موبايل است. انتظار ميرود پشتيباني از API هاي مورد نياز اندرويد بسيار قوي باشد كه همين عامل باعث ميشود توجه به ساير بخشها در اين زمينه كاهش يابد. اين گفته يعني درحاليكه پشتيباني از اپليكيشنها بايد گسترش يابد، اما ويندوز قادر نخواهد بود تا تمامي برنامههاي لينوكسي را اجرا كند. در اينجا خبري از كرنل لينوكسي نيست، بنابراين پشتيباني از فايل سيستمهايي مانند ZFS يا btrfs در ويندوز وجود نخواهد داشت. بهنظر ميرسد اپليكيشنهايي مانند Wireshark كه درخواست دسترسي سطح پايين به دستگاههاي سختافزاري را دارد، احتمالا به همين صورت قابليت اجرا شدن در ويندوز را نخواهد داشت و براي اينكار بايد اپليكيشن ياد شده را براي ويندوز پورت كرد. WSL همچنين شامل هيچ زير سيستم گرافيكي نميشود و فقط براي اپليكيشنهاي ابزار خط فرمان در نظر گرفته شده است.
اينكه مايكروسافت تصميم گرفته از اجراي نرم افزار لينوكس در ويندوز پشنيباني كند، به خودي خود يك حركت بسيار شگفتانگيز است؛ ولي سوال مشخص اين است كه چرا؟ بر خلاف انتظار بسياري افراد، پاسخ اين سوال آسان است. چراكه توسعهدهندگان، اين ابزارها را دوست دارند و پشتيباني از اين ابزارها باعث خوشحالي آنها خواهد شد. اما داستان كمي عميقتر از اين حرفها است. پشتيباني از اپليكيشنهاي لينوكس در ويندوز با توجه به اينكه مايكروسافت بيش از ده سال را به توسعه API هاي اختصاصي و پلفترم اپليكيشنهاي خود صرف كرده، يك حركت قابل توجه است. اين تصميم در واقع براي ارائهي ابزارهاي بيشتر جهت رفاه بيشتر توسعهدهندگان گرفته شده و قطعا براي اتخاذ چنين تصميمي عوامل بيشتري نيز وجود دارد.
تا ۱۵ سال پيش ويندوز تنها پلتفرم جدي براي توسعهدهندگان نرمافزاري بود. همچنين لينوكس در بخش سرورها يك انتخاب بسيار مهم به شما ميرفت؛ اما در آن سالها در دسكتاپها جايگاه مناسبي نداشت و اين اتفاق تا كنون هم ادامه يافته و بيشتر افرادي كه به كد نويسي علاقه زيادي دارند از آن استفاده ميكنند. OS X نيز در آن سالها در نخستين دورههاي رشد خود به سر ميبرد و فقط بر روي دستگاههاي بسيار گرانقيمت با سختافزار مناسب قابل اجرا بود. اين عوامل باعث شده بود تا ويندوز به عنوان يك انتخاب پيشفرض براي توسعه توسط بسياري از افراد انتخاب شود. ميتوان بهراحتي گفت در آن زمان هنوز رقيب مشابه خوبي براي ويندوز وجود نداشت.
تا ۱۵ سال پيش ويندوز تنها پلتفرم جدي براي توسعهدهندگان نرمافزاري بود.
البته پشتيباني از لينوكس در ويندوز به خودي خود پيامد ديگري هم براي مايكروسافت و سيستمعاملش دارد و آن امكان پشتيباني ويندوز براي استفادههاي سمت سرور است. يك مثال بسيار خوب براي اين مورد، سرور بانك داده MYSQL است. درحاليكه اين بانك داده امروزه نسبت به گذشته بسيار بهتر شده، اما هميشه از آن به عنوان دومين انتخاب خوب ياد ميشود و از نظر قابليتهاي فني و نيز يكپارچگي دادهها، PostgreSQL اساسا بسيار بهتر عمل ميكند. اما با اين وجود به دليل پلتفرم توسعهپذير بهتر، MYSQL در بازارهاي امروزي بيشتر مورد توجه قرار گرفته است. اين بانك داده را ميتوان بهراحتي و از طريق نصبكنندهي آن در ويندوز نصب كرد. MySQL يك نرمافزار ويندوزي بسياري مناسب براي مديريت دادهها و بانكهاي اطلاعتي و نيز ساخت پرس و جوها (Query) محسوب ميشود و درايورهاي ODBC بسيار خوبي هم دارد. در سمت ديگر بهنظر ميرسد توسعهدهندگان PostgreSQL هيچ يك از اين موارد را در اولويت خود ندارند و نيز امكان اجراي آن در ويندوز وجود ندارد و در واقع ميتوان گفت آنچه MySQL با روشي آسان ارائه ميدهد را در اختيار كاربر نميگذارد.
پس جاي تعجبي هم نيست كه چرا MySQL نسبت به PostgreSQL بيشتر گسترش يافته و مورد استفاده قرار ميگيرد.
اما وضعيت هميشه به اين صورت پيش نخواهد رفت. ايجاد محيط توسعهي Ruby در ويندوز بسيار سخت است. اجراي Ruby در هر پلتفرمي به صورت ناقص و نا كامل و به اصلاح خودمانيتر دست و پا شكسته، است؛ ولي اين شرايط در ويندوز بدتر نيز ميشود. محيط توسعهي پرطرفدار و محبوب node.js نيز در OS X و Linux ايجاد شده و براي مدتي طولاني نميتوان آن را با كارايي بالا و مشابهي با سيستمعاملهاي ياد شده، اجرا كرد. Salvatore Sanfilippo كه توسعهدهندهي NoSQL است نسبت به استفاده از وصلههاي نرمافزاري (Patch) براي اجراي بانك داده مورد استفادهاش در ويندوز، اجتناب ميورزد و اين به دليل دشمني وي با مايكروسافت نيست؛ بلكه به اين دليل است كه وي نيازي به انجام اينكار نميبيند. به عقيدهي او، ميتوان بهجاي اينكار از نمونههاي مشابه نرمافزار مورد اشاره در ويندوز بهره گرفت و هيچ چيز نبايد مانعي براي توسعهي محصول اصلي شود.
مياكروسافت و لينوكس
مشخصا ويندوز به طور كامل ناپديد نشده، اما ديگر آن پلتفرمي نيست كه اكثرا آن را داشتند و استفاده ميكردند. اما چرا اينگونه نيست؟ زيرا دو رقيبي كه در سال ۲۰۰۰ چندان به چشم نميآمدند حالا واقعا توسعهي زيادي يافتهاند. لينوكس را از بسياري جوانب نميتوان پتلفرمي دانست كه استفاده از آن در دسكتاپها راحتتر از ساير سيستم عاملها باشد، بخصوص براي كساني كه قصد استنفاده از آن در يك لپتاپ جديد را داشته باشند؛ اما نسبت به ميزان استفاده از آن در اين روزها واقعا پتانسيل بالاتري دارد. همچنين OS X به لطف تركيب طراحي سختافزاري مناسب اپل و پردازشگرهاي x86، به گزينهاي بسيار مناسب براي تعداد زيادي از توسعهدهندگان مبدل شده است.
مشخصا ويندوز به طور كامل ناپديد نشده؛ اما ديگر آن پلتفرمي نيست كه اكثرا آن را داشتند و استفاده ميكردند.
واقعيت اين است كه به مدت چند سال، اپل تنها لپتاپهاي x86 مقرون به صرفه و كاربردي را توليد كرده كه استفاده از آنها نيز لذتبخش است و اين گفته اصلا اغراق نيست. به عنوان مثال مكبوك اير استاندارد جديدي را براي وزن و اندازه تعيين كرده و درحاليكه مدلهاي اوليه اين محصول واقعا گرانقيمت محسوب ميشدند، اما رفته رفته قيمت آن كاهش يافت. رايانههاي سنتي روميزي نيز ميتوانند خود را با تغييرات مطابقت دهند و حتي توليدكنندگان اين نوع محصولات نظير لنوو هم اكنون تمايل به ساخت محصولاتي گرانقيمت دارند كه بتوان آنها را با تغييرات هماهنگ كرد. اپل نيز در اين زمينه، محصولاتي را ارائه ميكند كه در واقع تركيبي از قيمت بالا، قدرت زياد و قابليت حمل بالايي دارند و در بخش سيستمعامل نيز به مقدار زيادي از كدهاي FreeBSD استفاده كرده است. البته كه تفاوتهايي بين سيستمعامل OS X و FreeBSD وجود دارد و لينوكس بر روي يك سرور اجرا ميشود؛ اما نسبت به ويندوز، شباهتهاي دو سيستمعامل ياد شده بيشتر از تفاوتهاي آنها است.
آنچه اپل انجام داده در واقع باعث ميشود تا هر محقق رايانهاي يا دانشجويان مهندسي نرمافزار بتوانند با هزينهاي كم، محيط يونيكسي كار خود را داشته باشند و جاي تعجب ندارد كه اين سيستمها گسترش بيابند. محبوبيت پايدار اپل در سانفرانسيسكو و درهي سيليكون قطعا يكي از عوامل مهم رشد سيستمعاملي مانند iOS به عنوان يك پلفترم براي اپليكيشنها است. افراد باهوشي كه تحصيل آنها در دانشگاه تمام شده يا به هر دليل ديگري از آنجا خارج شدهاند، تحت فشار شركتهاي ويندوز محور آمريكايي قرار نگرفتهاند. اين افراد ميتوانند در فرهنگي كه به اپل احترام گذاشته ميشود رشد كنند و همهي آنها توسط اين كمپاني دوست داشتني صاحب مكبوك پروهاي زيباي خود ميشوند. ويندوز هم البته با طرفداران جامعهي متنباز مشكل خاصي ندارد و فقط روش انتخاب شدهي اين شركت دقيقا بر اساس تفكر چنين افرادي نيست.
موضوع ياد شده مشكلي است كه مايكروسافت به آرامي آن را تشخيص داد. اين شركت به طور كلي در زمينه اعلام نيازهايش در جامعهي توسعهدهندگان كنوني خود خوب عمل ميكند؛ اما اين اتفاق با نوعي نزديكبيني صورت ميگيرد. هر مورد ديگري كه خارج از چهارچوب مد نظر ردمونديها باشد، چشمپوشي خواهد شد. به عنوان مثال Visual Studio C و C++ هنوز هم به صورت كامل از C99 پشتيباني نميكند. C99 در واقع نسخهاي از زبان برنامهنويسي C است كه حدود ۱۷ سال قبل به صورت استاندارد درآمد. به دليل درخواستهاي مكرري كه مايكروسافت دريافت كرده بود، در نهايت پشتيباني از C99 را نيز انجام داد و در اين زمينه هميشه مقاومت از خود نشان داده است. البته توسعهدهندگان ويندوز به زبان C99 كد نمينويسند؛ پس در اين صورت نيازي به پشتيباني از آن هم نخواهد بود و اين جمله منطقي به نظر ميرسد.
اما در اصل، ماجرا از اين قرار است كه به دليل عدم توانايي كامپايلرهاي C و C++ در ويندوز براي كامپايل كدهاي C99، توسعهدهندگان نميتوانستند با اين زبان در سيستمعامل مايكرسافت برنامهنويسي كنند. در كنار اين موضوع، جامعهي متن باز از C99 با آغوشي گرم استقبال ميكند و حالا كدهايي را توليد ميكند كه به راحتي در محيط ويندوز نميشد آنها را كامپايل كرد و اين در شرايطي است كه در صورت امكانپذير بودن، احتمالا بسياري از توسعهدهندگان ويندوز ميخواهند بهخوبي از چنين كدهايي استفاده كنند؛ ولي به دليلي كه اشاره شد، اين قابليت را نداشتند. افراد كدهايي را مينوشتند كه بخشي از ويندوز محسوب نميشدند و نيازهاي آنها نيز در اولويت قرار نميگرفت. به نظر ميرسد كه در چند سال اخير اهالي ردموند به اين مشكل پي بردهاند و با ارائهي جديدترين نسخههاي C++ سعي در رفع آن نمودند؛ ولي هنوز دقيقا مشخص نشده كه چه زماني پشتيباني كامل از C99 انجام خواهد شد.
همين قضيه به صورت مشابهي در مورد همخواني با يونيكس و محيط Shell و بخصوص فضاي كاربري آن، نيز وجود دارد. هر توسعهدهندهي جوان و فعالي كه دانشگاه را به اتمام ميرساند، قصد دارد تا با bash و make و ساير اين ابزارها بتواند به راحتي كار كند. ممكن است ويژال استوديو مناسب به نظر برسد، اما در واقع با هدف اين دانشجويان غير مرتبط است. مايكروسافت هم البته به صورت كامل از اين موضوع بي اطلاع نيست.
microsoft loves linux
اما آنچه در نهايت ميبينم تلاشهاي فردي براي پورت كردن ابزارهاي مختلف در ويندوز است. اما مايكروسافت نيز با كمك مالي و توسعه، به پورت كردن node.js براي ويندوز سعي خود را در اين زمينه انجام داده است. node.js به طور بسيار عميقي به I/O نا همگام متكي است كه اين روش در پلتفرمهاي مختلف تفاوتهايي دارد. بسياري از افراد در نهايت اما قبول دارند كه نتيجهي كار در مورد node.js به نرمافزاري بهتر تبديل شده و روش ويندوز براي اين هدف بسيار خوب ارزيابي شده است. در واقع ناهمگاميها به بخشهاي كوچكتري تبديل شدهاند تا در نهايت به صورت كتابخانههاي مخصوص به خود درآيند. براي مثال libuv را ميتوان نام برد كه در نوع خود واقعا خوب عمل ميكند و node.js نيز يكي از اعضاي اين كتابخانه به حساب ميآيد. مايكروسافت به روش مشابهي redis را نيز پورت كرده تا بتوان آن را در ويندوز اجرا كرد.
تلاشهايي كه از جانب مايكروسافت براي اجراي ابزارها و نرمافزار لينوكس بر روي ويندوز انجام شده، واقعا با ارزش هستند؛ اما هنوز نميتوان آن را كامل دانست. اين شركت نميتواند هر پروژهاي را پورت كند و اين درحالي است كه سازندهي node.js يعني Ryan Dahl, به اين نكته پي برده كه پشتيباني از ويندوز واقعا با ارزش است و مايل است تا به منظور پشتيباني node.js از ويندوز، حتي تغييرات قابل توجهي را در نرمافزار خود اعمال كند. اين اقدام البته توسط همهي توسعهدهنگان ابزارهاي لينوكسي انجام نميشود و بسياري از اين توسعهدهندگان تفكري مانند Dahl ندارند.
Windows Subsystem for Linux به صورت يك بروزرساني در تابستان براي ويندوز ۱۰ از راه خواهد رسيد. WSL شامل دو بخش است: هستهي زير سيستم كه شامل نسخههاي پيشنمايش سيستمعامل است و سپس يك بستهي نرمافزاري استاندارد را ارائه ميدهد. هسته زير سيستم در واقع چيزي است كه امكان اجراي API لينوكس را در بستر ويندوز فراهم ميكند و قابليت اجراي كتابخانهها و نرم افزارهاي اجراي لينوكسي را به صورت مستفيم و بومي در سيستمعامل ردمونديها، شدني ميكند. اين يعني شما خواهيد توانست بَش (bash) و تمامي ابزارهاي خط فرمان كه از محيط لينوكس انتظار داريد را در ويندوز هم تجربه كنيد.
مايكروسافت با جديت زياد در حال تثبيت موقعيت WSL به عنوان ابزاري براي توسعه دهندگان است و از منظري خاص توسعهدهندگان وب و سازندگان نرمافزارهاي متنباز را پشتيباني ميكند. بسياري از توسعهدهندگان با بَش و ساخت نرمافزار با استفاده از make و gcc و نيز ويرايش متن با vi يا emacs آشنايي دارند. WSL نسخهاي از اين ابزارها را در اختيار توسعهدهندگان قرار خواهد داد كه دقيقا مشابه با نمونهي آنها در لينوكس است؛ چراكه با اقدامات جديد مايكروسافت شما دقيقا لينوكس را به صورت كامل در ويندوز تجربه خواهيد كرد.
windows 10 bash
با چنين تمركزي در بخش توسعهدهندگان، اما مايكروسافت از WSL به عنوان يك پلتفرم گسترشدهنده پشتيباني نميكند. به عنوان مثال امكان دارد بتوان وب سرور آپاچي را تحت WSL اجرا كرد و نيز امكان دارد توسعهي آن مفيد باشد، اما هدف اين نيست كه اپليكيشنهاي كاربردي با چنين پيكربندياي اجرا شوند.
باز شدن راه اپليكيشنهاي ساير پلتفرمها در ويندوز
WSL در واقع از پروژهي Astoria منشا گرفته است. هدف اين پروژه قابليت اجراي اپليكيشنهاي اندرويد بر روي ويندوز ۱۰ موبايل است. انتظار ميرود پشتيباني از API هاي مورد نياز اندرويد بسيار قوي باشد كه همين عامل باعث ميشود توجه به ساير بخشها در اين زمينه كاهش يابد. اين گفته يعني درحاليكه پشتيباني از اپليكيشنها بايد گسترش يابد، اما ويندوز قادر نخواهد بود تا تمامي برنامههاي لينوكسي را اجرا كند. در اينجا خبري از كرنل لينوكسي نيست، بنابراين پشتيباني از فايل سيستمهايي مانند ZFS يا btrfs در ويندوز وجود نخواهد داشت. بهنظر ميرسد اپليكيشنهايي مانند Wireshark كه درخواست دسترسي سطح پايين به دستگاههاي سختافزاري را دارد، احتمالا به همين صورت قابليت اجرا شدن در ويندوز را نخواهد داشت و براي اينكار بايد اپليكيشن ياد شده را براي ويندوز پورت كرد. WSL همچنين شامل هيچ زير سيستم گرافيكي نميشود و فقط براي اپليكيشنهاي ابزار خط فرمان در نظر گرفته شده است.
اينكه مايكروسافت تصميم گرفته از اجراي نرم افزار لينوكس در ويندوز پشنيباني كند، به خودي خود يك حركت بسيار شگفتانگيز است؛ ولي سوال مشخص اين است كه چرا؟ بر خلاف انتظار بسياري افراد، پاسخ اين سوال آسان است. چراكه توسعهدهندگان، اين ابزارها را دوست دارند و پشتيباني از اين ابزارها باعث خوشحالي آنها خواهد شد. اما داستان كمي عميقتر از اين حرفها است. پشتيباني از اپليكيشنهاي لينوكس در ويندوز با توجه به اينكه مايكروسافت بيش از ده سال را به توسعه API هاي اختصاصي و پلفترم اپليكيشنهاي خود صرف كرده، يك حركت قابل توجه است. اين تصميم در واقع براي ارائهي ابزارهاي بيشتر جهت رفاه بيشتر توسعهدهندگان گرفته شده و قطعا براي اتخاذ چنين تصميمي عوامل بيشتري نيز وجود دارد.
تا ۱۵ سال پيش ويندوز تنها پلتفرم جدي براي توسعهدهندگان نرمافزاري بود. همچنين لينوكس در بخش سرورها يك انتخاب بسيار مهم به شما ميرفت؛ اما در آن سالها در دسكتاپها جايگاه مناسبي نداشت و اين اتفاق تا كنون هم ادامه يافته و بيشتر افرادي كه به كد نويسي علاقه زيادي دارند از آن استفاده ميكنند. OS X نيز در آن سالها در نخستين دورههاي رشد خود به سر ميبرد و فقط بر روي دستگاههاي بسيار گرانقيمت با سختافزار مناسب قابل اجرا بود. اين عوامل باعث شده بود تا ويندوز به عنوان يك انتخاب پيشفرض براي توسعه توسط بسياري از افراد انتخاب شود. ميتوان بهراحتي گفت در آن زمان هنوز رقيب مشابه خوبي براي ويندوز وجود نداشت.
تا ۱۵ سال پيش ويندوز تنها پلتفرم جدي براي توسعهدهندگان نرمافزاري بود.
البته پشتيباني از لينوكس در ويندوز به خودي خود پيامد ديگري هم براي مايكروسافت و سيستمعاملش دارد و آن امكان پشتيباني ويندوز براي استفادههاي سمت سرور است. يك مثال بسيار خوب براي اين مورد، سرور بانك داده MYSQL است. درحاليكه اين بانك داده امروزه نسبت به گذشته بسيار بهتر شده، اما هميشه از آن به عنوان دومين انتخاب خوب ياد ميشود و از نظر قابليتهاي فني و نيز يكپارچگي دادهها، PostgreSQL اساسا بسيار بهتر عمل ميكند. اما با اين وجود به دليل پلتفرم توسعهپذير بهتر، MYSQL در بازارهاي امروزي بيشتر مورد توجه قرار گرفته است. اين بانك داده را ميتوان بهراحتي و از طريق نصبكنندهي آن در ويندوز نصب كرد. MySQL يك نرمافزار ويندوزي بسياري مناسب براي مديريت دادهها و بانكهاي اطلاعتي و نيز ساخت پرس و جوها (Query) محسوب ميشود و درايورهاي ODBC بسيار خوبي هم دارد. در سمت ديگر بهنظر ميرسد توسعهدهندگان PostgreSQL هيچ يك از اين موارد را در اولويت خود ندارند و نيز امكان اجراي آن در ويندوز وجود ندارد و در واقع ميتوان گفت آنچه MySQL با روشي آسان ارائه ميدهد را در اختيار كاربر نميگذارد.
پس جاي تعجبي هم نيست كه چرا MySQL نسبت به PostgreSQL بيشتر گسترش يافته و مورد استفاده قرار ميگيرد.
اما وضعيت هميشه به اين صورت پيش نخواهد رفت. ايجاد محيط توسعهي Ruby در ويندوز بسيار سخت است. اجراي Ruby در هر پلتفرمي به صورت ناقص و نا كامل و به اصلاح خودمانيتر دست و پا شكسته، است؛ ولي اين شرايط در ويندوز بدتر نيز ميشود. محيط توسعهي پرطرفدار و محبوب node.js نيز در OS X و Linux ايجاد شده و براي مدتي طولاني نميتوان آن را با كارايي بالا و مشابهي با سيستمعاملهاي ياد شده، اجرا كرد. Salvatore Sanfilippo كه توسعهدهندهي NoSQL است نسبت به استفاده از وصلههاي نرمافزاري (Patch) براي اجراي بانك داده مورد استفادهاش در ويندوز، اجتناب ميورزد و اين به دليل دشمني وي با مايكروسافت نيست؛ بلكه به اين دليل است كه وي نيازي به انجام اينكار نميبيند. به عقيدهي او، ميتوان بهجاي اينكار از نمونههاي مشابه نرمافزار مورد اشاره در ويندوز بهره گرفت و هيچ چيز نبايد مانعي براي توسعهي محصول اصلي شود.
مياكروسافت و لينوكس
مشخصا ويندوز به طور كامل ناپديد نشده، اما ديگر آن پلتفرمي نيست كه اكثرا آن را داشتند و استفاده ميكردند. اما چرا اينگونه نيست؟ زيرا دو رقيبي كه در سال ۲۰۰۰ چندان به چشم نميآمدند حالا واقعا توسعهي زيادي يافتهاند. لينوكس را از بسياري جوانب نميتوان پتلفرمي دانست كه استفاده از آن در دسكتاپها راحتتر از ساير سيستم عاملها باشد، بخصوص براي كساني كه قصد استنفاده از آن در يك لپتاپ جديد را داشته باشند؛ اما نسبت به ميزان استفاده از آن در اين روزها واقعا پتانسيل بالاتري دارد. همچنين OS X به لطف تركيب طراحي سختافزاري مناسب اپل و پردازشگرهاي x86، به گزينهاي بسيار مناسب براي تعداد زيادي از توسعهدهندگان مبدل شده است.
مشخصا ويندوز به طور كامل ناپديد نشده؛ اما ديگر آن پلتفرمي نيست كه اكثرا آن را داشتند و استفاده ميكردند.
واقعيت اين است كه به مدت چند سال، اپل تنها لپتاپهاي x86 مقرون به صرفه و كاربردي را توليد كرده كه استفاده از آنها نيز لذتبخش است و اين گفته اصلا اغراق نيست. به عنوان مثال مكبوك اير استاندارد جديدي را براي وزن و اندازه تعيين كرده و درحاليكه مدلهاي اوليه اين محصول واقعا گرانقيمت محسوب ميشدند، اما رفته رفته قيمت آن كاهش يافت. رايانههاي سنتي روميزي نيز ميتوانند خود را با تغييرات مطابقت دهند و حتي توليدكنندگان اين نوع محصولات نظير لنوو هم اكنون تمايل به ساخت محصولاتي گرانقيمت دارند كه بتوان آنها را با تغييرات هماهنگ كرد. اپل نيز در اين زمينه، محصولاتي را ارائه ميكند كه در واقع تركيبي از قيمت بالا، قدرت زياد و قابليت حمل بالايي دارند و در بخش سيستمعامل نيز به مقدار زيادي از كدهاي FreeBSD استفاده كرده است. البته كه تفاوتهايي بين سيستمعامل OS X و FreeBSD وجود دارد و لينوكس بر روي يك سرور اجرا ميشود؛ اما نسبت به ويندوز، شباهتهاي دو سيستمعامل ياد شده بيشتر از تفاوتهاي آنها است.
آنچه اپل انجام داده در واقع باعث ميشود تا هر محقق رايانهاي يا دانشجويان مهندسي نرمافزار بتوانند با هزينهاي كم، محيط يونيكسي كار خود را داشته باشند و جاي تعجب ندارد كه اين سيستمها گسترش بيابند. محبوبيت پايدار اپل در سانفرانسيسكو و درهي سيليكون قطعا يكي از عوامل مهم رشد سيستمعاملي مانند iOS به عنوان يك پلفترم براي اپليكيشنها است. افراد باهوشي كه تحصيل آنها در دانشگاه تمام شده يا به هر دليل ديگري از آنجا خارج شدهاند، تحت فشار شركتهاي ويندوز محور آمريكايي قرار نگرفتهاند. اين افراد ميتوانند در فرهنگي كه به اپل احترام گذاشته ميشود رشد كنند و همهي آنها توسط اين كمپاني دوست داشتني صاحب مكبوك پروهاي زيباي خود ميشوند. ويندوز هم البته با طرفداران جامعهي متنباز مشكل خاصي ندارد و فقط روش انتخاب شدهي اين شركت دقيقا بر اساس تفكر چنين افرادي نيست.
موضوع ياد شده مشكلي است كه مايكروسافت به آرامي آن را تشخيص داد. اين شركت به طور كلي در زمينه اعلام نيازهايش در جامعهي توسعهدهندگان كنوني خود خوب عمل ميكند؛ اما اين اتفاق با نوعي نزديكبيني صورت ميگيرد. هر مورد ديگري كه خارج از چهارچوب مد نظر ردمونديها باشد، چشمپوشي خواهد شد. به عنوان مثال Visual Studio C و C++ هنوز هم به صورت كامل از C99 پشتيباني نميكند. C99 در واقع نسخهاي از زبان برنامهنويسي C است كه حدود ۱۷ سال قبل به صورت استاندارد درآمد. به دليل درخواستهاي مكرري كه مايكروسافت دريافت كرده بود، در نهايت پشتيباني از C99 را نيز انجام داد و در اين زمينه هميشه مقاومت از خود نشان داده است. البته توسعهدهندگان ويندوز به زبان C99 كد نمينويسند؛ پس در اين صورت نيازي به پشتيباني از آن هم نخواهد بود و اين جمله منطقي به نظر ميرسد.
اما در اصل، ماجرا از اين قرار است كه به دليل عدم توانايي كامپايلرهاي C و C++ در ويندوز براي كامپايل كدهاي C99، توسعهدهندگان نميتوانستند با اين زبان در سيستمعامل مايكرسافت برنامهنويسي كنند. در كنار اين موضوع، جامعهي متن باز از C99 با آغوشي گرم استقبال ميكند و حالا كدهايي را توليد ميكند كه به راحتي در محيط ويندوز نميشد آنها را كامپايل كرد و اين در شرايطي است كه در صورت امكانپذير بودن، احتمالا بسياري از توسعهدهندگان ويندوز ميخواهند بهخوبي از چنين كدهايي استفاده كنند؛ ولي به دليلي كه اشاره شد، اين قابليت را نداشتند. افراد كدهايي را مينوشتند كه بخشي از ويندوز محسوب نميشدند و نيازهاي آنها نيز در اولويت قرار نميگرفت. به نظر ميرسد كه در چند سال اخير اهالي ردموند به اين مشكل پي بردهاند و با ارائهي جديدترين نسخههاي C++ سعي در رفع آن نمودند؛ ولي هنوز دقيقا مشخص نشده كه چه زماني پشتيباني كامل از C99 انجام خواهد شد.
همين قضيه به صورت مشابهي در مورد همخواني با يونيكس و محيط Shell و بخصوص فضاي كاربري آن، نيز وجود دارد. هر توسعهدهندهي جوان و فعالي كه دانشگاه را به اتمام ميرساند، قصد دارد تا با bash و make و ساير اين ابزارها بتواند به راحتي كار كند. ممكن است ويژال استوديو مناسب به نظر برسد، اما در واقع با هدف اين دانشجويان غير مرتبط است. مايكروسافت هم البته به صورت كامل از اين موضوع بي اطلاع نيست.
microsoft loves linux
اما آنچه در نهايت ميبينم تلاشهاي فردي براي پورت كردن ابزارهاي مختلف در ويندوز است. اما مايكروسافت نيز با كمك مالي و توسعه، به پورت كردن node.js براي ويندوز سعي خود را در اين زمينه انجام داده است. node.js به طور بسيار عميقي به I/O نا همگام متكي است كه اين روش در پلتفرمهاي مختلف تفاوتهايي دارد. بسياري از افراد در نهايت اما قبول دارند كه نتيجهي كار در مورد node.js به نرمافزاري بهتر تبديل شده و روش ويندوز براي اين هدف بسيار خوب ارزيابي شده است. در واقع ناهمگاميها به بخشهاي كوچكتري تبديل شدهاند تا در نهايت به صورت كتابخانههاي مخصوص به خود درآيند. براي مثال libuv را ميتوان نام برد كه در نوع خود واقعا خوب عمل ميكند و node.js نيز يكي از اعضاي اين كتابخانه به حساب ميآيد. مايكروسافت به روش مشابهي redis را نيز پورت كرده تا بتوان آن را در ويندوز اجرا كرد.
تلاشهايي كه از جانب مايكروسافت براي اجراي ابزارها و نرمافزار لينوكس بر روي ويندوز انجام شده، واقعا با ارزش هستند؛ اما هنوز نميتوان آن را كامل دانست. اين شركت نميتواند هر پروژهاي را پورت كند و اين درحالي است كه سازندهي node.js يعني Ryan Dahl, به اين نكته پي برده كه پشتيباني از ويندوز واقعا با ارزش است و مايل است تا به منظور پشتيباني node.js از ويندوز، حتي تغييرات قابل توجهي را در نرمافزار خود اعمال كند. اين اقدام البته توسط همهي توسعهدهنگان ابزارهاي لينوكسي انجام نميشود و بسياري از اين توسعهدهندگان تفكري مانند Dahl ندارند.